Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported 您所在的位置:网站首页 spring 400错误 Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported

Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported

2023-04-13 12:19| 来源: 网络整理| 查看: 265

首先描述一下出现错误的情景: 我刚学springmvc,想做一个登录界面的东西。然后试着写了一个controller如下: @RequestMapping(value = "/login", method = RequestMethod.POST) public String login( String name, String password, Model model) { User u = userService.login(name, password); if (u == null) throw new UserException("no user exist!"); if (!u.getPassword().equals(password)) { throw new UserException("password is not right!"); } model.addAttribute("loginUser", u); return "redirect:/user/users"; } 然后就出现了 400 badrequest这个错误了。网上找资料,说是属性不匹配吧,于是找jsp页面的错误,没有不匹配的地方,于是添加 log4j.logger.org.springframework.web=debug到log4j日志里面,果然出现错误的地方了。究其原因是

@RequestMapping(value = "/{id}", method = RequestMethod.GET) public String show(@PathVariable int id, Model model) { model.addAttribute("user", userService.load(id)); return "user/show"; }

因为这个mapping地址localhost:8080/xxx/user/id(int类型)的, login的mapping地址localhost:8080/xxx/user/login(String类型)的, 所以在dispatch的时候,spring误认为是要去访问show这个方法,就造成了数据类型不匹配,也就是String型无法转变为int类型的错误,也就造成了400 bad request错误了,如此,解决方法就是在show方法的 @RequestMapping(value = "/{id}", method = RequestMethod.GET)改为 @RequestMapping(value = "show/{id}", method = RequestMethod.GET)这样就区别开了。 到此,第一个问题解决。方法是

先检查一下数据类型是否匹配。 自己检查不到,就用控制台输出一个debug信息,然后查看,Springmvc中log4j.logger.org.springframework.web=debug到log4j日志里面 查看信息,修改即可。

405 Request method ‘GET’ not supported

这个错误,纯属自己的问题了,我也查看了jsp页面提交方法是post,然后controller的方法也是method = RequestMethod.POST,怎么会出现GET请求呢?原来是我直接访问login页面。 我在controller中写了一个方法,将视图转到login页面就解决了 如下: @RequestMapping(value="",method=RequestMethod.GET) public String index(){ return "user/login"; }

另,附上我在网上查找资料的时候,别人遇到的一些错误原因:

@Controller @RequestMapping("/newPost.htm") public class NewPostController{ @Autowired PostsBusinessDelegate postsBusinessDelegate = null; @Autowired AddNewPostFormBean addNewPostFormBean = null; @RequestMapping(method=RequestMethod.GET) public String getCreateForm(Model model) { model.addAttribute(addNewPostFormBean); return "/newPost.htm"; } @RequestMapping(method=RequestMethod.POST) public String create(AddNewPostFormBean article, BindingResult result, HttpServletRequest request) { if (result.hasErrors()) { return "/newPost.htm"; } postsBusinessDelegate.addNewPost((User) request.getSession().getAttribute("CURRENT_USER"), article); return "redirect:/index.htm"; } @RequestMapping(***method=RequestMethod.GET***) public String getView(Model model) { AddNewPostFormBean anpfb = this.addNewPostFormBean; if (anpfb == null) { return "/newPost.htm"; } model.addAttribute(anpfb); return "/newPost.htm"; } @ExceptionHandler(Exception.class) public String exception(Throwable t) { return "/index.htm"; } Title:

这个问题主要出现在有两个GET,不知道映射哪个。controller中create跟getView方法

如有错误,请指出,刚学习springmvc不久。谢谢!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有